home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Source Code / Visual Basic Source Code.iso / vbsource / mquery / mfilter.frm < prev    next >
Text File  |  1995-05-02  |  8KB  |  292 lines

  1. VERSION 2.00
  2. Begin Form fFilter 
  3.    BackColor       =   &H00C0C0C0&
  4.    BorderStyle     =   1  'Fixed Single
  5.    Caption         =   "Filter"
  6.    ClientHeight    =   2370
  7.    ClientLeft      =   3390
  8.    ClientTop       =   3675
  9.    ClientWidth     =   5070
  10.    ControlBox      =   0   'False
  11.    Height          =   2775
  12.    Left            =   3330
  13.    LinkTopic       =   "Form1"
  14.    MaxButton       =   0   'False
  15.    MinButton       =   0   'False
  16.    ScaleHeight     =   2412
  17.    ScaleMode       =   0  'User
  18.    ScaleWidth      =   5160
  19.    Top             =   3330
  20.    Width           =   5190
  21.    Begin ListBox cFieldList 
  22.       BackColor       =   &H00FFFFFF&
  23.       Height          =   1395
  24.       Left            =   240
  25.       TabIndex        =   2
  26.       Tag             =   " OL"
  27.       Top             =   360
  28.       Width           =   1695
  29.    End
  30.    Begin ListBox cOpsList 
  31.       BackColor       =   &H00FFFFFF&
  32.       Height          =   1395
  33.       Left            =   2040
  34.       TabIndex        =   7
  35.       Tag             =   " OL"
  36.       Top             =   360
  37.       Width           =   960
  38.    End
  39.    Begin TextBox cExpr 
  40.       BackColor       =   &H00FFFFFF&
  41.       Height          =   287
  42.       Left            =   3120
  43.       TabIndex        =   1
  44.       Tag             =   " OL"
  45.       Top             =   360
  46.       Width           =   1811
  47.    End
  48.    Begin CommandButton OkayButton 
  49.       Caption         =   "&OK"
  50.       Default         =   -1  'True
  51.       Enabled         =   0   'False
  52.       Height          =   372
  53.       Left            =   600
  54.       TabIndex        =   4
  55.       Top             =   1919
  56.       Width           =   1691
  57.    End
  58.    Begin CommandButton CancelButton 
  59.       Cancel          =   -1  'True
  60.       Caption         =   "&Cancel"
  61.       Height          =   372
  62.       Left            =   2879
  63.       TabIndex        =   5
  64.       Top             =   1919
  65.       Width           =   1691
  66.    End
  67.    Begin Label Label1 
  68.       Alignment       =   2  'Center
  69.       AutoSize        =   -1  'True
  70.       BackColor       =   &H00C0C0C0&
  71.       Caption         =   "Do not use quotes"
  72.       Height          =   195
  73.       Left            =   3195
  74.       TabIndex        =   8
  75.       Top             =   720
  76.       Width           =   1605
  77.    End
  78.    Begin Label OpsLabel 
  79.       BackColor       =   &H00C0C0C0&
  80.       Caption         =   "Operators:"
  81.       Height          =   192
  82.       Left            =   2039
  83.       TabIndex        =   6
  84.       Top             =   120
  85.       Width           =   971
  86.    End
  87.    Begin Label FieldListLabel 
  88.       BackColor       =   &H00C0C0C0&
  89.       Caption         =   "Fields:"
  90.       Height          =   192
  91.       Left            =   240
  92.       TabIndex        =   3
  93.       Top             =   120
  94.       Width           =   1092
  95.    End
  96.    Begin Label ExprLabel 
  97.       BackColor       =   &H00C0C0C0&
  98.       Caption         =   "Value or Expression:"
  99.       Height          =   192
  100.       Left            =   3120
  101.       TabIndex        =   0
  102.       Top             =   120
  103.       Width           =   1811
  104.    End
  105. End
  106. Option Explicit
  107. Dim FNotFound As Integer
  108.  
  109. Sub CancelButton_Click ()
  110.   Hide
  111.   'set the flag for the dynaset/dynagrid form
  112.   gfFindFailed = True
  113. End Sub
  114.  
  115. Sub cExpr_Change ()
  116.   If cFieldList <> "" And cOpsList <> "" And cExpr <> "" Then
  117.     OkayButton.Enabled = True
  118.   Else
  119.     OkayButton.Enabled = False
  120.   End If
  121. End Sub
  122.  
  123. Sub cExpr_KeyPress (keyascii As Integer)
  124. If keyascii = 34 Then
  125. keyascii = 0
  126. End If
  127.  
  128.  
  129.  
  130. End Sub
  131.  
  132. Sub cFieldList_Click ()
  133.   If cFieldList <> "" And cOpsList <> "" And cExpr <> "" Then
  134.     OkayButton.Enabled = True
  135.   Else
  136.     OkayButton.Enabled = False
  137.   End If
  138. End Sub
  139.  
  140. Sub cOpsList_Click ()
  141.   If cFieldList <> "" And cOpsList <> "" And cExpr <> "" Then
  142.     OkayButton.Enabled = True
  143.   Else
  144.     OkayButton.Enabled = False
  145.   End If
  146. End Sub
  147.  
  148. Sub Form_Load ()
  149.  
  150.    Me.Left = (screen.Width - Me.Width) / 2
  151.    Me.Top = (screen.Height - Me.Height) / 2
  152.  
  153.   FNotFound = False
  154.   cOpsList.AddItem "="
  155.   cOpsList.AddItem "<>"
  156.   cOpsList.AddItem ">="
  157.   cOpsList.AddItem "<="
  158.   cOpsList.AddItem ">"
  159.   cOpsList.AddItem "<"
  160.   cOpsList.AddItem "Like"
  161. End Sub
  162.  
  163. Sub Form_Paint ()
  164.   Outlines Me
  165. End Sub
  166.  
  167. Sub OkayButton_Click ()
  168.    Dim i As Integer
  169.    Dim isit As Variant ' checking for dates and numbers
  170.    Dim j As Integer
  171.    Dim k As Integer
  172.    Dim TableStr() As String ' stores multiple table names
  173.    Dim l As Integer
  174.    Dim addFltr As String ' adds proper table name to filter
  175.  
  176.    On Error GoTo FindErr
  177.  
  178.    
  179.    FNotFound = False
  180.    SetHourGlass Me
  181.  
  182.    gstFindField = cFieldList
  183.    gstFindExpr = cExpr
  184.    gstFindOp = cOpsList
  185.    
  186.   ' add table name to field for proper sql statement
  187.   ' get tables, may be a few
  188.   
  189.   Do
  190.   i = InStr(1, gTblname, ",")
  191.     If i = Len(gTblname) Then  ' last can end with a comma
  192.         gTblname = Left(gTblname, i - 1)
  193.         Exit Do
  194.     End If
  195.  
  196.        If i > 0 Then  ' if a comma then 1 to comma-1 is first table
  197.            ' take first table
  198.            ReDim Preserve TableStr(j)
  199.            TableStr(j) = Left(gTblname, i - 1) & "."
  200.            ' strip TableStr(j) from gTblName
  201.            gTblname = Mid(gTblname, i + 1, Len(gTblname))
  202.            j = j + 1 ' increment counter
  203.        End If
  204.   Loop Until i = 0
  205.   ' get last table if more than one cause above code doesn't
  206.   If j > 0 Then
  207.     ReDim Preserve TableStr(j)
  208.     TableStr(j) = gTblname & "."
  209.     gTblname = ""
  210.   End If
  211.     Select Case gTblname
  212.         Case Is = ""' multiple tables
  213.         For l = 0 To j
  214.         For i = 1 To Len(gstDynaString)
  215.            If k > 1 Then Exit For
  216.             k = InStr(i, UCase(gstDynaString), UCase(TableStr(l) & "[" & gstFindField & "]"))
  217.              If k > 1 Then
  218.                  addFltr = TableStr(l)
  219.                  Exit For
  220.                  End If
  221.        Next i
  222.        Next l
  223.     Case Else  'single table
  224.        addFltr = Trim(gTblname & ".")
  225.     End Select
  226.  
  227.  
  228.    isit = cExpr
  229.  
  230.    'see if it's a date field
  231.         If IsDate(isit) Then
  232.         i = InStr(1, gstFindField, " ")
  233.            If i > 0 Then
  234.             gFilterStr = "[" + gstFindField + "]" + " " + gstFindOp + " " + "#" + gstFindExpr + "#"
  235.            Else
  236.             gFilterStr = gstFindField + " " + gstFindOp + " " + "#" + gstFindExpr + "#"
  237.            End If
  238.         Hide
  239.         GoTo Findend
  240.         'Stop'
  241.         End If
  242.  
  243.  
  244.    If IsNumeric(isit) Then
  245.    ' pass it, it's a number but put quotes around field name
  246.         i = InStr(1, gstFindField, " ")
  247.            If i > 0 Then
  248.             gFilterStr = "[" + gstFindField + "]" + " " + gstFindOp + " " + gstFindExpr
  249.            Else
  250.             gFilterStr = gstFindField + " " + gstFindOp + " " + gstFindExpr
  251.            End If
  252.    Else
  253.    ' put brackets around expression
  254.        ' i = InStr(1, gstFindField, " ")
  255.            'If i > 0 Then
  256.             gFilterStr = "[" + gstFindField + "]" + " " + gstFindOp + " " + Chr(34) + gstFindExpr + Chr(34)
  257.            'Else
  258.             'gFilterStr = gstFindField + " " + gstFindOp + " " + Chr(34) + gstFindExpr + Chr(34)
  259.            'End If
  260.   End If
  261.    gFilterStr = addFltr + gFilterStr
  262.  
  263. ' see if this was not a stored query..if not add to SQL statement for save
  264.  If Not gStoredFlag Then
  265.     i = InStr(1, UCase(gstDynaString), "WHERE") 'see if a where exists
  266.         If i = 0 Then
  267.             gstDynaString = Trim(gstDynaString & " Where " & "(" & gFilterStr & ")")
  268.         Else
  269.             k = InStr(i + 5, gstDynaString, ")")
  270.             addFltr = Mid(gstDynaString, k + 1, Len(gstDynaString)) ' more at end?
  271.             gstDynaString = Trim(Mid(gstDynaString, 1, k - 1) & " And " & gFilterStr & ")" & " " & addFltr)
  272.         End If
  273.  End If
  274.  
  275.    Hide
  276.    GoTo Findend
  277.  
  278. FindErr:
  279.    If Err <> EOF_ERR Then
  280.      ShowError
  281.      Resume Findend
  282.    Else
  283.      FNotFound = True
  284.      Resume Next
  285.    End If
  286.  
  287. Findend:
  288.    ResetMouse Me
  289.  
  290. End Sub
  291.  
  292.